package co.fitstart.mobile.service;

import java.util.Date;
import java.util.Map;

import co.fitstart.entity.course.schedule.CourseSchedule;
import co.fitstart.entity.principal.Principal;
import co.fitstart.entity.site.RoomType;
import co.fitstart.entity.site.Site;
import co.fitstart.entity.user.Student;

/**
 * 
 * @author mohanlan
 *
 */
public interface CourseScheduleService {
    
    /**
     * 
     * @param coach
     * @param day
     * @param experience
     * @return
     */
    public Map<String, CourseSchedule> mapCourseSchedule(Principal coach, Date day, boolean experience);

    /**
     * 
     * @param courseScheduleId
     * @return
     */
    public CourseSchedule loadCourseSchedule(Long courseScheduleId);

    /**
     * 
     * @param student
     * @param occurDate
     * @param occurHours
     * @return
     */
    public CourseSchedule loadCourseSchedule(Student student, Date occurDate, String[] occurHours);
    
    /**
     * 
     * @param courseSchedule
     * @param roomType
     * @param site
     * @param day 
     * @param hour 
     */
    public void editCourseSchedule(CourseSchedule courseSchedule, Principal coach, RoomType roomType, Site site, Date day, String hour);
    
    
    /**
     * Do cancel course schedule
     * 
     * @param courseSchedule
     */
    public void cancelSchedule(CourseSchedule courseSchedule);
    
    /**
     * 
     * @param courseSchedule
     * @param validLocation
     * @return
     */
    public String generateScheduleQrCode(CourseSchedule courseSchedule, boolean validLocation);

}
